معضل
دراین نصیب سعی میکنیم یک دکمه خاصی هم به دیالوگ خویش اضافه کنیم. اندروید همچون دکمههای مثبت و منفی، یک دکمه خنثی نیز دارااست:
1builder.setNeutralButton("Maybe") { dialog, which ->
2 Toast.makeText(applicationContext, "Maybe",Toast.LENGTH_SHORT).show()
3}
همچون دکمههای پیشین برای دکمه خنثی نیز یک متن و اکشن تمجید میکنیم. در تصویر تحت خلق و خوی نرم افزار را بعداز ایفا میبینید.
گزینههای Toast
موردهای Toast عناصری می باشند که در اندروید برای اکران لحظهای چیزی استعمال می گردند و آن گاه به طور اتوماتیک ناپدید میشوند. تا یکسری سال پیش آن ها یک استاندارد برای پیام محسوب میشدند، البته فعلا به صورت عمده از سوی گسترشدهندگان برای اکران خطاهایی که اصلی نیستند یا این که فقطً در حین پیشرفت نرم افزار آیتم استعمال قرار میگیرند.
به این ترتیب به نقطه نهایی قسمت پیاده سازی دکمهها برای تعامل با مخاطب میرسیم.
نصیب 3: دیالوگهای دارنده لیست
چیزهای متعددی وجود داراهستند که ممکن میباشد بخواهید به دیالوگ اضافه فرمایید. دراین قسمت پایان با طریق اضافه کردن لیستی از موردها به دیالوگ آشنا میشویم. این شغل در سه بخش اعمال می شود:
لیستهای متنی بی آلایش که میقدرت یک مورد را گزینش کرد.
لیستهای به طور دکمههای رادیویی که گشوده میقدرت یک مورد را گزینش کرد.
لیستهای تیکزدنی که میاقتدار یک سری مورد را تعیین نمائید.
اضافه کردن دکمههای بیشتر برای اکران دیالوگ
قبل از فعالیت کردن روی نرم افزار، 4 دکمه دیگر به UI برای چهار اخطار تازه اضافه میکنیم. براین اساس در تمامی نمونههای پایین از آنها استعمال خواهیم کرد.
کلیک نمائید
تهیه و تنظیم دکمهها
کد تحت را به پوشه activity_main.xml و ذیل دکمه گذشته اضافه نمایید:
12 android:id="@+id/button_traditional_list"
3 android:layout_width="wrap_content"
4 android:layout_height="wrap_content"
5 android:onClick="showBasicDialog"
6 android:text="Show single-choice list!"
7 app:layout_constraintBottom_toBottomOf="parent"
8 app:layout_constraintLeft_toLeftOf="parent"
9 app:layout_constraintRight_toRightOf="parent"
10 app:layout_constraintTop_toTopOf="parent" />
این کد به طور کاملً شبیه کد دکمه قبل میباشد، ولی 3 نکته قابل توجه وجود داراست:
خط ابتدا یک id دارااست. ID-ها برای دستکاری نماها در کد مداقه متعددی دارا هستند و قابلیت و امکان ارجاع به آنان را آماده میسازند. به دنبال برهان این عمل را خواهید فهمید.
اسلوب onClick همچنان به showBasicDialog اشاره مینماید ولی بعد از تولید روال اکران لیست آن را تغییر و تحول خواهیم بخشید. موقتاً آن را همین طور باقی میگذاریم تا اندروید استودیو غلط نشانه ندهد.
متن دکمه را عوض کردهایم.
نرم افزار را بیلد و ایفا فرمایید تا سود پایین نتایج خواهد شد:
درصورتیکه به آن نگاه نمائید، می بینید که دکمه جدیدی روی دکمه قبل اضافه گردیدهاست. عامل این شرایط آن میباشد که ID را اضافه کردهایم. به دکمه گذشته هم یک ID می دهیم:
1
عالی میباشد ID را تحت عنوان گزینه نخستین در XML اضافه کنیم تا شناسایی آن ها سهل وآسانخیس باشد، البته میاقتدار هر کشور دیگری هم اضافه کرد. فعلا دقت فرمایید که هر دو دکمه خطوط مشابهی دارا هستند که سبب به حالت قیود layout_constraintX_toYOf می گردد. در دنیای بسط تلفن همراه، یعنی اندروید و iOS رایج میباشد که برای مدیر نماها از «قیود» (constraints) به کار گیری میگردد. این قیود شالوده به دکمهها اعلام مینمایند که خویش را در کجای ورقه قرار دهند. در صورتیکه به هر دو دکمه نگاه نمائید دارنده قید parent می باشند یعنی بایستی مسافت یکسانی از بالا، زیر، راست و چپ برگه داشته باشند. برای اکران دو دکمه می بایست آنهارا در قید تحت دکمه در آغاز در اختیار بگذاریم که نسبت به قید top دکمه دوم باشد. به همین جهت میباشد که به کار گیری از ID در اینجا لزوم داراست.
قیود
قید layout_constraintBottom_toBottomOf دکمه ابتدا را به طور ذیل تغییرو تحول دهید:
1app:layout_constraintBottom_toTopOf="@id/button_traditional_list"
دقت فرمایید که دکمه فعلا مقید به toTopOf شدهاست، در حالی که تا قبل از اینً مقید به layout_constraintTop_toTopOf بود:
1app:layout_constraintTop_toBottomOf="@id/button_basic_dialog"
نکته: ضروری وجود ندارد که هر دو قید layout_constraintBottom_toTopOf و layout_constraintTop_toBottomOf اضافه شوند، ولی در صورتیکه آنها را اضافه نمایید، تمرین بیشتری کردهاید و معنای آنها را عالی شعور می کنید.
فعلا نرم افزار را توشه دیگر جاری ساختن نمایید تا بتوانید هر دو دکمه را مشاهده کنید. دراین فرصت، هر دوی آنان در دیالوگ ظواهر می شوند، زیرا هر دو به اکشن showBasicDialog ارجاع داراهستند.
اضافه کردن باقی دکمهها
دراین قسمت دو دکمه دیگر اضافه میکنیم که به ترتیب دارنده متنهای Show radio button list!” و “Show checkboxes list! میباشند:
1 2 android:id="@+id/button_radio_list"
3 android:layout_width="wrap_content"
4 android:layout_height="wrap_content"
5 android:onClick="showBasicDialog"
6 android:text="Show radio button list!"
7 app:layout_constraintBottom_toTopOf="@id/button_checkbox_list"
8 app:layout_constraintLeft_toLeftOf="parent"
9 app:layout_constraintRight_toRightOf="parent"
10 app:layout_constraintTop_toBottomOf="@id/button_traditional_list" />
11
12 13 android:id="@+id/button_checkbox_list"
14 android:layout_width="wrap_content"
15 android:layout_height="wrap_content"
16 android:onClick="showBasicDialog"
17 android:text="Show checkbox list!"
18 app:layout_constraintBottom_toBottomOf="parent"
19 app:layout_constraintLeft_toLeftOf="parent"
20 app:layout_constraintRight_toRightOf="parent"
21 app:layout_constraintTop_toBottomOf="@id/button_radio_list" />
مشاهده بی نقص کدها
اکنون با چهار دکمهای که به نرم افزار اضافه کردهایم، بایستی به طور پایین درآمده باشد:
بدین ترتیب فعالیت فراهمسازی به نقطه نهایی رسیده میباشد و می توانیم استارت به کدنویسی دیالوگها بکنیم.
دیالوگ اندروید با لیست
همان گونه که پیشخیس در اولِ این نصیب از نوشته ی علمی اشاره کردیم، اندروید سه مورد اساسی برای اضافه کردن لیست به دیالوگ در چنگ ما قرار میدهد که مشمول متنهای معمولی سوای نشانگر، با دکمههای رادیویی و با قاب تعیین میباشد.
اضافه کردن لیست قابل گزینش متنی
اول مورد لیستی میباشد که بر پایه ی مستندات اندروید، یک لیست «لیست تکآیتمای سنتی» (traditional single-choice list) خوانده می گردد. به پوشه MainActivity.kt طراحی اپلیکیشن در مشهد بروید و تابع جدیدی ساخت فرمائید:
1fun showTraditionalListDialog(view: View?) { ... }
در امر هر لیست می بایست یک آرایه نو به یاروهمدم موردهایی که اکران خواهند یافت ساختوساز نمایید. فکر کنید میخواهید از استفاده کننده بپرسید سرگرمی دوست داستنی او چیست. آرایهای داخل تابع اضافه نمائید و موردها را به طور تحت اضافه فرمایید:
1val hobbies = arrayOf("VideoGames", "Reading", "Sports", "Movies")
آنگاه کد ساخت دیالوگ را اضافه می کنیم:
1//1
2val builder = AlertDialog.Builder(this)
3builder.setTitle("Traditonal List")
4//2
5builder.setItems(hobbies, DialogInterface.OnClickListener {
6 dialog, which ->
7 //3
8 // \'which\' item of the \'dialog\' was selected
9 Toast.makeText(applicationContext, hobbies[which], Toast.LENGTH_SHORT).show()
10})
11//4
12builder.show()
در کد فوق شغل های ذیل را اعمال می دهیم:
در نصیب 1، یک builder می سازیم. کلمه و واژه this به چارچوب نرم افزار اشاره دارااست. همینطور تیتر را اضافه میکنیم، البته ضرورتی ندارد.
در نصیب 2، گزینههایی که در آرایه hobbies میباشند را به بیلدر اضافه می کنیم، براین اساس متوجه میگردد که بایستی یک لیست عرضه نماید. روال hobbies را اضافه میکنیم تا بداند در طی کلیک شدن یک گزینه می بایست چه کاری جاری ساختن دهد.
در نصیب 3، همچون نمونه نخستین، وقتی که مخاطب یک مورد را تعیین مینماید یک Toast اکران می دهیم. دقت فرمائید که پارامتر دوم در حال حاضر به آیتمی از آرایه اشاره داراست که کلیک شدهاست. این مشی یک اندیس ارائه مینماید، بدین ترتیب به hobbies[1] ارجاع میدهیم و فنای در Toast اکران می یابد.
در قسمت 4، به builder اعلام می کنیم که بایستی اکران یابد. به خیال داشته باشید که نباید این قسمت را فراموش نمائید، زیرا در غیر این شکل تمامی زحمات به هدر میرود.
فعلا به فولدر activity_main.xml بروید و با عوض کردن محتوای مشی onClick دکمه متناظر به تابع اشاره نمایید:
1android:onClick="showTraditionalListDialog"
نرم افزار را ایفا فرمایید و روی دکمه Show single-choice List کلیک کنید. براین اساس بایستی چیزی مانند تصویر تحت مشاهده کنید:
اضافه کردن یک لیست با دکمههای رادیویی
درصورتیکه نصیب پیشین را به نیکی متوجه گردیده باشید، می بایست این نوید را بدهیم که ساخت و ساز لیست با دکمههای رادیویی یا این که کادرهای تعیین نیز پروسه به طور کاملً مشابهی دارااست. درپی این مفاد را نیز نظارت میکنیم:
دراین باره بایستی سابقه گزینههای تعیین گردیده را محافظت کنیم، بدین ترتیب فارغ تابع یک متغیر ساخت و ساز می کنیم:
1private var selectedRadioItem = -1
ادله این که عدد 1- را اضافه کردهایم این میباشد که در بالا هیچ موردای تعیین نشده میباشد. البته شاید بخواهید دیالوگ با بعضا موردهای از پیش تعیینگردیده شروع خواهد شد.
بعد از آن همچون نصیب پیشین یک تابع ساخت میکنیم که دراین مورد showRadioButtonListDialog اسم دارااست:
1fun showRadioButtonListDialog(view: View?) { ... }
کد تحت را به تابع اضافه نمایید:
1// 1
2val cities = arrayOf("New York", "London", "Hong Kong", "Río")
3// 2
4val builder = AlertDialog.Builder(this)
5builder.setTitle("Radio Button List")
6// 3
7builder.setSingleChoiceItems(cities, selectedRadioItem, DialogInterface.OnClickListener {
8 dialog, which ->
9 //4
10 selectedRadioItem = which
11 Toast.makeText(applicationContext, cities[which], Toast.LENGTH_SHORT).show()
12})
13// 5
14builder.setPositiveButton("OK") {
15 dialog, which ->
16 dialog.dismiss()
17}
18// 6
19builder.show()
مشاهده بی نقص کدها
توضیح کد فوق به طور پایین میباشد:
در قدم 1، یک آرایه از اسم شهرها ساختوساز کردهایم. فرض فرمایید استفاده کننده میخواهد شهری که در آن معاش مینماید را گزینش نماید، 4 آیتم در چنگ او قرار می دهیم.
در قدم 2، چنان که پیشخیس اشاره کردیم، هر دیالوگ بایستی یک بیلدر به یار و همدم تیتر داشته باشد.
در قدم 3، می بینید که گزینهها از روش اسلوب ()setSingleChoiceItems اضافه گردیدهاند. براین اساس به بیلدر اعلام می کنیم که یک لیست با دکمههای رادیویی می خواهیم. تفاوت این وضعیت با اسلوب ()setItems قبل دراین میباشد که در حال حاضر گزینه پیشفرض هم گرفته می گردد. این متغیری میباشد که پیش از اینً با اسم selectedRadioItem ساخت کردهایم.
در قدم 4، selectRadioItem را روی گزینه تازه تعیین گردیده گزینش میکنیم. عامل ساخت و ساز این متغیر در فارغ تابع آن میباشد که بایستی گزینه را ذخیره کنیم، زیرا در غیر این شکل هر توشه که تابع فراخوانی میشود مورد ذخیره گردیده دستکاری شود. همچون گذشته، یک Tosat برای دیدن مورد درست اکران می دهیم.
در قدم 5، یک دکمه تأیید هم اضافه میکنیم، چون مخاطب ممکن میباشد هنوز مطمئن نباشد که می خواهد مورد را تغییر تحول دهد یا این که خیر.
در قدم 6، دیالوگ را اکران میدهیم.
در غایت می بایست این سیاق را به onClick مرتبط با دکمه در پوشه activity_main.xml اضافه نمایید:
1android:onClick="showRadioButtonListDialog"
نرم افزار را توشه دیگر جاری ساختن نمایید تا سود کلیک کردن روی گزینه show radio button list را به طور ذیل ملاحظه کنید:
معضل
دراین نصیب سعی میکنیم یک دکمه خاصی هم به دیالوگ خویش اضافه کنیم. اندروید همچون دکمههای مثبت و منفی، یک دکمه خنثی نیز دارااست:
1builder.setNeutralButton("Maybe") { dialog, which ->
2 Toast.makeText(applicationContext, "Maybe",Toast.LENGTH_SHORT).show()
3}
همچون دکمههای پیشین برای دکمه خنثی نیز یک متن و اکشن تمجید میکنیم. در تصویر تحت خلق و خوی نرم افزار را بعداز ایفا میبینید.
گزینههای Toast
موردهای Toast عناصری می باشند که در اندروید برای اکران لحظهای چیزی استعمال می گردند و آن گاه به طور اتوماتیک ناپدید میشوند. تا یکسری سال پیش آن ها یک استاندارد برای پیام محسوب میشدند، البته فعلا به صورت عمده از سوی گسترشدهندگان برای اکران خطاهایی که اصلی نیستند یا این که فقطً در حین پیشرفت نرم افزار آیتم استعمال قرار میگیرند.
به این ترتیب به نقطه نهایی قسمت پیاده سازی دکمهها برای تعامل با مخاطب میرسیم.
نصیب 3: دیالوگهای دارنده لیست
چیزهای متعددی وجود داراهستند که ممکن میباشد بخواهید به دیالوگ اضافه فرمایید. دراین قسمت پایان با طریق اضافه کردن لیستی از موردها به دیالوگ آشنا میشویم. این شغل در سه بخش اعمال می شود:
لیستهای متنی بی آلایش که میقدرت یک مورد را گزینش کرد.
لیستهای به طور دکمههای رادیویی که گشوده میقدرت یک مورد را گزینش کرد.
لیستهای تیکزدنی که میاقتدار یک سری مورد را تعیین نمائید.
اضافه کردن دکمههای بیشتر برای اکران دیالوگ
قبل از فعالیت کردن روی نرم افزار، 4 دکمه دیگر به UI برای چهار اخطار تازه اضافه میکنیم. براین اساس در تمامی نمونههای پایین از آنها استعمال خواهیم کرد.
کلیک نمائید
تهیه و تنظیم دکمهها
کد تحت را به پوشه activity_main.xml و ذیل دکمه گذشته اضافه نمایید:
12 android:id="@+id/button_traditional_list"
3 android:layout_width="wrap_content"
4 android:layout_height="wrap_content"
5 android:onClick="showBasicDialog"
6 android:text="Show single-choice list!"
7 app:layout_constraintBottom_toBottomOf="parent"
8 app:layout_constraintLeft_toLeftOf="parent"
9 app:layout_constraintRight_toRightOf="parent"
10 app:layout_constraintTop_toTopOf="parent" />
این کد به طور کاملً شبیه کد دکمه قبل میباشد، ولی 3 نکته قابل توجه وجود داراست:
خط ابتدا یک id دارااست. ID-ها برای دستکاری نماها در کد مداقه متعددی دارا هستند و قابلیت و امکان ارجاع به آنان را آماده میسازند. به دنبال برهان این عمل را خواهید فهمید.
اسلوب onClick همچنان به showBasicDialog اشاره مینماید ولی بعد از تولید روال اکران لیست آن را تغییر و تحول خواهیم بخشید. موقتاً آن را همین طور باقی میگذاریم تا اندروید استودیو غلط نشانه ندهد.
متن دکمه را عوض کردهایم.
نرم افزار را بیلد و ایفا فرمایید تا سود پایین نتایج خواهد شد:
درصورتیکه به آن نگاه نمائید، می بینید که دکمه جدیدی روی دکمه قبل اضافه گردیدهاست. عامل این شرایط آن میباشد که ID را اضافه کردهایم. به دکمه گذشته هم یک ID می دهیم:
1
عالی میباشد ID را تحت عنوان گزینه نخستین در XML اضافه کنیم تا شناسایی آن ها سهل وآسانخیس باشد، البته میاقتدار هر کشور دیگری هم اضافه کرد. فعلا دقت فرمایید که هر دو دکمه خطوط مشابهی دارا هستند که سبب به حالت قیود layout_constraintX_toYOf می گردد. در دنیای بسط تلفن همراه، یعنی اندروید و iOS رایج میباشد که برای مدیر نماها از «قیود» (constraints) به کار گیری میگردد. این قیود شالوده به دکمهها اعلام مینمایند که خویش را در کجای ورقه قرار دهند. در صورتیکه به هر دو دکمه نگاه نمائید دارنده قید parent می باشند یعنی بایستی مسافت یکسانی از بالا، زیر، راست و چپ برگه داشته باشند. برای اکران دو دکمه می بایست آنهارا در قید تحت دکمه در آغاز در اختیار بگذاریم که نسبت به قید top دکمه دوم باشد. به همین جهت میباشد که به کار گیری از ID در اینجا لزوم داراست.
قیود
قید layout_constraintBottom_toBottomOf دکمه ابتدا را به طور ذیل تغییرو تحول دهید:
1app:layout_constraintBottom_toTopOf="@id/button_traditional_list"
دقت فرمایید که دکمه فعلا مقید به toTopOf شدهاست، در حالی که تا قبل از اینً مقید به layout_constraintTop_toTopOf بود:
1app:layout_constraintTop_toBottomOf="@id/button_basic_dialog"
نکته: ضروری وجود ندارد که هر دو قید layout_constraintBottom_toTopOf و layout_constraintTop_toBottomOf اضافه شوند، ولی در صورتیکه آنها را اضافه نمایید، تمرین بیشتری کردهاید و معنای آنها را عالی شعور می کنید.
فعلا نرم افزار را توشه دیگر جاری ساختن نمایید تا بتوانید هر دو دکمه را مشاهده کنید. دراین فرصت، هر دوی آنان در دیالوگ ظواهر می شوند، زیرا هر دو به اکشن showBasicDialog ارجاع داراهستند.
اضافه کردن باقی دکمهها
دراین قسمت دو دکمه دیگر اضافه میکنیم که به ترتیب دارنده متنهای Show radio button list!” و “Show checkboxes list! میباشند:
1 2 android:id="@+id/button_radio_list"
3 android:layout_width="wrap_content"
4 android:layout_height="wrap_content"
5 android:onClick="showBasicDialog"
6 android:text="Show radio button list!"
7 app:layout_constraintBottom_toTopOf="@id/button_checkbox_list"
8 app:layout_constraintLeft_toLeftOf="parent"
9 app:layout_constraintRight_toRightOf="parent"
10 app:layout_constraintTop_toBottomOf="@id/button_traditional_list" />
11
12 13 android:id="@+id/button_checkbox_list"
14 android:layout_width="wrap_content"
15 android:layout_height="wrap_content"
16 android:onClick="showBasicDialog"
17 android:text="Show checkbox list!"
18 app:layout_constraintBottom_toBottomOf="parent"
19 app:layout_constraintLeft_toLeftOf="parent"
20 app:layout_constraintRight_toRightOf="parent"
21 app:layout_constraintTop_toBottomOf="@id/button_radio_list" />
مشاهده بی نقص کدها
اکنون با چهار دکمهای که به نرم افزار اضافه کردهایم، بایستی به طور پایین درآمده باشد:
بدین ترتیب فعالیت فراهمسازی به نقطه نهایی رسیده میباشد و می توانیم استارت به کدنویسی دیالوگها بکنیم.
دیالوگ اندروید با لیست
همان گونه که پیشخیس در اولِ این نصیب از نوشته ی علمی اشاره کردیم، اندروید سه مورد اساسی برای اضافه کردن لیست به دیالوگ در چنگ ما قرار میدهد که مشمول متنهای معمولی سوای نشانگر، با دکمههای رادیویی و با قاب تعیین میباشد.
اضافه کردن لیست قابل گزینش متنی
اول مورد لیستی میباشد که بر پایه ی مستندات اندروید، یک لیست «لیست تکآیتمای سنتی» (traditional single-choice list) خوانده می گردد. به پوشه MainActivity.kt طراحی اپلیکیشن در مشهد بروید و تابع جدیدی ساخت فرمائید:
1fun showTraditionalListDialog(view: View?) { ... }
در امر هر لیست می بایست یک آرایه نو به یاروهمدم موردهایی که اکران خواهند یافت ساختوساز نمایید. فکر کنید میخواهید از استفاده کننده بپرسید سرگرمی دوست داستنی او چیست. آرایهای داخل تابع اضافه نمائید و موردها را به طور تحت اضافه فرمایید:
1val hobbies = arrayOf("VideoGames", "Reading", "Sports", "Movies")
آنگاه کد ساخت دیالوگ را اضافه می کنیم:
1//1
2val builder = AlertDialog.Builder(this)
3builder.setTitle("Traditonal List")
4//2
5builder.setItems(hobbies, DialogInterface.OnClickListener {
6 dialog, which ->
7 //3
8 // \'which\' item of the \'dialog\' was selected
9 Toast.makeText(applicationContext, hobbies[which], Toast.LENGTH_SHORT).show()
10})
11//4
12builder.show()
در کد فوق شغل های ذیل را اعمال می دهیم:
در نصیب 1، یک builder می سازیم. کلمه و واژه this به چارچوب نرم افزار اشاره دارااست. همینطور تیتر را اضافه میکنیم، البته ضرورتی ندارد.
در نصیب 2، گزینههایی که در آرایه hobbies میباشند را به بیلدر اضافه می کنیم، براین اساس متوجه میگردد که بایستی یک لیست عرضه نماید. روال hobbies را اضافه میکنیم تا بداند در طی کلیک شدن یک گزینه می بایست چه کاری جاری ساختن دهد.
در نصیب 3، همچون نمونه نخستین، وقتی که مخاطب یک مورد را تعیین مینماید یک Toast اکران می دهیم. دقت فرمائید که پارامتر دوم در حال حاضر به آیتمی از آرایه اشاره داراست که کلیک شدهاست. این مشی یک اندیس ارائه مینماید، بدین ترتیب به hobbies[1] ارجاع میدهیم و فنای در Toast اکران می یابد.
در قسمت 4، به builder اعلام می کنیم که بایستی اکران یابد. به خیال داشته باشید که نباید این قسمت را فراموش نمائید، زیرا در غیر این شکل تمامی زحمات به هدر میرود.
فعلا به فولدر activity_main.xml بروید و با عوض کردن محتوای مشی onClick دکمه متناظر به تابع اشاره نمایید:
1android:onClick="showTraditionalListDialog"
نرم افزار را ایفا فرمایید و روی دکمه Show single-choice List کلیک کنید. براین اساس بایستی چیزی مانند تصویر تحت مشاهده کنید:
اضافه کردن یک لیست با دکمههای رادیویی
درصورتیکه نصیب پیشین را به نیکی متوجه گردیده باشید، می بایست این نوید را بدهیم که ساخت و ساز لیست با دکمههای رادیویی یا این که کادرهای تعیین نیز پروسه به طور کاملً مشابهی دارااست. درپی این مفاد را نیز نظارت میکنیم:
دراین باره بایستی سابقه گزینههای تعیین گردیده را محافظت کنیم، بدین ترتیب فارغ تابع یک متغیر ساخت و ساز می کنیم:
1private var selectedRadioItem = -1
ادله این که عدد 1- را اضافه کردهایم این میباشد که در بالا هیچ موردای تعیین نشده میباشد. البته شاید بخواهید دیالوگ با بعضا موردهای از پیش تعیینگردیده شروع خواهد شد.
بعد از آن همچون نصیب پیشین یک تابع ساخت میکنیم که دراین مورد showRadioButtonListDialog اسم دارااست:
1fun showRadioButtonListDialog(view: View?) { ... }
کد تحت را به تابع اضافه نمایید:
1// 1
2val cities = arrayOf("New York", "London", "Hong Kong", "Río")
3// 2
4val builder = AlertDialog.Builder(this)
5builder.setTitle("Radio Button List")
6// 3
7builder.setSingleChoiceItems(cities, selectedRadioItem, DialogInterface.OnClickListener {
8 dialog, which ->
9 //4
10 selectedRadioItem = which
11 Toast.makeText(applicationContext, cities[which], Toast.LENGTH_SHORT).show()
12})
13// 5
14builder.setPositiveButton("OK") {
15 dialog, which ->
16 dialog.dismiss()
17}
18// 6
19builder.show()
مشاهده بی نقص کدها
توضیح کد فوق به طور پایین میباشد:
در قدم 1، یک آرایه از اسم شهرها ساختوساز کردهایم. فرض فرمایید استفاده کننده میخواهد شهری که در آن معاش مینماید را گزینش نماید، 4 آیتم در چنگ او قرار می دهیم.
در قدم 2، چنان که پیشخیس اشاره کردیم، هر دیالوگ بایستی یک بیلدر به یار و همدم تیتر داشته باشد.
در قدم 3، می بینید که گزینهها از روش اسلوب ()setSingleChoiceItems اضافه گردیدهاند. براین اساس به بیلدر اعلام می کنیم که یک لیست با دکمههای رادیویی می خواهیم. تفاوت این وضعیت با اسلوب ()setItems قبل دراین میباشد که در حال حاضر گزینه پیشفرض هم گرفته می گردد. این متغیری میباشد که پیش از اینً با اسم selectedRadioItem ساخت کردهایم.
در قدم 4، selectRadioItem را روی گزینه تازه تعیین گردیده گزینش میکنیم. عامل ساخت و ساز این متغیر در فارغ تابع آن میباشد که بایستی گزینه را ذخیره کنیم، زیرا در غیر این شکل هر توشه که تابع فراخوانی میشود مورد ذخیره گردیده دستکاری شود. همچون گذشته، یک Tosat برای دیدن مورد درست اکران می دهیم.
در قدم 5، یک دکمه تأیید هم اضافه میکنیم، چون مخاطب ممکن میباشد هنوز مطمئن نباشد که می خواهد مورد را تغییر تحول دهد یا این که خیر.
در قدم 6، دیالوگ را اکران میدهیم.
در غایت می بایست این سیاق را به onClick مرتبط با دکمه در پوشه activity_main.xml اضافه نمایید:
1android:onClick="showRadioButtonListDialog"
نرم افزار را توشه دیگر جاری ساختن نمایید تا سود کلیک کردن روی گزینه show radio button list را به طور ذیل ملاحظه کنید:

راهکارهای کاهش CPC در کمپینها